其他
Flutter 快速上手,秒变大前端
配置开发环境
下载flutter SDK。地址(链接见文末)
将flutter的bin目录添加到path中。
执行flutter doctor命令,他会安装flutter框架,包括dart,而且提示你任何其他需要安装的依赖。
安装其他依赖。
在IDE中安装flutter插件。
体验
▐ Android Studio (为Flutter提供完整的IDE体验)
创建应用
选择 File>New Flutter Project
选择 Flutter application 作为 project 类型, 然后点击 Next
输入项目名称 (如 myapp), 然后点击 Next
点击 Finish
等待Android Studio安装SDK并创建项目. 在项目目录中,您应用程序的代码位于 lib/main.dart.
运行应用程序
定位到Android Studio 工具栏:
在 target selector 中, 选择一个运行该应用的Android设备. 如果没有列出可用,请选择 Tools>Android>AVD Manager 并在那里创建一个 在工具栏中点击 Run图标, 或者调用菜单项 Run > Run.
▐ VS Code(轻量级编辑器,支持Flutter运行和调试)
创建应用
启动 VS Code. 调用 View>Command Palette… 输入 ‘flutter’, 然后选择 ‘Flutter: New Project’ action 输入 Project 名称 (如myapp), 然后按回车键 指定放置项目的位置,然后按蓝色的确定按钮 等待项目创建继续,并显示main.dart文件 在项目目录中,您应用程序的代码位于 lib/main.dart.
运行应用程序
确保在VS Code的右下角选择了目标设备 按 F5 键或调用Debug>Start Debugging 等待应用程序启动
▐ Terminal + 编辑器
创建应用
使用 flutter create 命令创建一个project:
$ flutter create myapp
$ cd myapp
运行应用程序
检查Android设备是否在运行。如果没有显示, 请参照 设置。(链接见文末)
$ flutter devices
$ flutter run
如果一切正常, 您应该在您的设备或模拟器上会看到启动的应用程序:
┬
└ projectname
┬
├ android - Android部分的工程文件
├ build - 项目的构建输出目录
├ ios - iOS部分的工程文件
├ lib - 项目中的Dart源文件
┬
└ src - 包含其他源文件
└ main.dart - 自动生成的项目入口文件,类似RN的index.js文件
├ test - 测试相关文件
└ pubspec.yaml - 项目依赖配置文件类似于RN的 package.json
如何添加Flutter项目所需的依赖?
在Android中,你可以在Gradle文件来添加依赖项; 在 iOS 中,通常把依赖添加到 Podfile 中; 在RN中,通常是由package.json来管理项目依赖;
dependencies:
flutter:
sdk: flutter
google_sign_in: ^3.0.3
如何归档图片资源以及如何处理不同分辨率
虽然Android将resources 和 assets 区别对待,但在Flutter中它们都会被作为assets处理, 所有存在于Android上res/drawable- *文件夹中的资源都放在Flutter的assets文件夹中。 与Android类似,iOS 同样将 images 和 assets 作为不同的东西,而 Flutter 中只有 assets。被放到 iOS 中 Images.xcasset 文件夹下的资源在 Flutter 中被放到了 assets 文件夹中。
my-assets/data.json
assets:
- my-assets/data.json
import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;
Future<String> loadAsset() async {
return await rootBundle.loadString('my-assets/data.json');
}
ldpi 0.75x
mdpi 1.0x
hdpi 1.5x
xhdpi 2.0x
xxhdpi 3.0x
xxxhdpi 4.0x
images/my_icon.png // Base: 1.0x image
images/2.0x/my_icon.png // 2.0x image
images/3.0x/my_icon.png // 3.0x image
assets:
- images/my_icon.png
return AssetImage("images/a_dot_burr.jpeg");
@override
Widget build(BuildContext context) {
return Image.asset("images/my_image.png");
}
不像 iOS 拥有一个 Localizable.strings 文件,Flutter目前没有专门的字符串资源系统。目前,最佳做法是将strings资源作为静态字段保存在类中。例如:
class Strings {
static String welcomeMessage = "Welcome To Flutter";
}
Text(Strings.welcomeMessage)
dependencies:
# ...
flutter_localizations:
sdk: flutter
intl: "^0.15.6"
import 'package:flutter_localizations/flutter_localizations.dart';
MaterialApp(
localizationsDelegates: [
// Add app-specific localization delegate[s] here
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('en', 'US'), // English
const Locale('he', 'IL'), // Hebrew
// ... other locales the app supports
],
// ...
)
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
),
home: Scaffold(
body: Text('Hello world!'),
),
);
}
}
Scaffold(
body: Center(
child: Text('Hello world!'),
),
)
Scaffold(
appBar: AppBar(),
body: Center(
child: Text('Hello world!'),
),
)
▐ StatefulWidget vs StatelessWidget
StatelessWidget 组件创建的方式:
class StatelessWidgetDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container();
}
}
class StatefulWidgetDemo extends StatefulWidget {
@override
_StatefulWidgetDemoState createState() => _StatefulWidgetDemoState();
}
class _StatefulWidgetDemoState extends State<StatefulWidgetDemo> {
@override
Widget build(BuildContext context) {
return Container();
}
}
快速书写小技巧:在 Android Studio 和 VS Code 中 输入 stl 然后点击回车,可以快速创建 StatelessWidget 组件,同理输入 stf 点击回车,可以快速创建 StatefulWidget 组件,这是编辑器 Live Templates 的功能。
▐ Material vs Cupertino
总结
如果你感兴趣我们的业务或者转岗可以发送简历至 zhaojie.nzj@alibaba-inc.com 24小时在线服务。(点击文末”阅读原文“查看职位详情)